home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 41.zip / BS1 part 41 / Abacus diskdrives IO.adf / CH4 / MiniData_V1.bas < prev    next >
BASIC Source File  |  1978-06-28  |  13KB  |  643 lines

  1.  
  2. 'MiniDat V1.0 © 1987 by GroSoft
  3. TROFF
  4.  
  5. CLEAR,35000&
  6.  
  7. Arrays:
  8. DIM Enter$(15),Maske$(15),Search$(15)
  9.  
  10. SCREEN 1,640,200,2,2
  11. WINDOW 1,"Mini Data V1.0",,21,1         
  12.  
  13. FOR i=1 TO 10
  14. MENU i,0,1,""
  15. NEXT i
  16.  
  17. MENU 1,0,1,"Mini Data"
  18. MENU 1,1,1,"Open file        F1"
  19. MENU 1,2,1,"New File         F2"
  20. MENU 1,3,1,"Quit Mini Data   F3"
  21.  
  22. MENU 2,0,1,"Search"
  23. MENU 2,1,1,"Select  F4"
  24.  
  25. MENU 3,0,1,"Mask"
  26. MENU 3,1,1,"Mask change F5"
  27.  
  28. MENU 4,0,1,"Printer"
  29. MENU 4,1,1,"Print record   F6"
  30. MENU 4,2,1,"Print file     F7"
  31.  
  32. MENU 5,0,1,"Sort"
  33. MENU 5,1,1,"Criterium  F8"
  34.  
  35. COLOR 2,0
  36. LOCATE 19,5:PRINT "File :"
  37. LOCATE 20,5:PRINT "Record :"
  38.  
  39.  
  40.  
  41. Buffer
  42. COLOR 1,0
  43.  
  44. MainLoop:
  45. MENU ON
  46. ON MENU GOSUB MenuBar
  47. BREAK ON
  48. ON BREAK GOSUB Interruption
  49. ON ERROR GOTO Problem
  50. ac$=""
  51. ac$=INKEY$
  52. IF ac$ ="" THEN MainLoop
  53. IF ac$=CHR$(129) THEN FileOpen
  54. IF ac$=CHR$(130) THEN NewFile
  55. IF ac$=CHR$(131) THEN MiniDataQuit
  56. IF MiniFile=1 THEN 
  57.   IF ac$=CHR$(132) THEN Searcher
  58.   IF ac$=CHR$(133) THEN MaskChange
  59.   IF ac$=CHR$(134) THEN PrintRecord
  60.   IF ac$=CHR$(135) THEN MiniFilePrint
  61.   IF ac$=CHR$(136) THEN SortRoutine
  62.   IF ac$=CHR$(31) THEN PrevRecord
  63.   IF ac$=CHR$(30) THEN NextRecord
  64.   IF ac$=CHR$(13) THEN DataEntry
  65.   IF ac$=CHR$(28) THEN FirstRecord
  66. END IF
  67. GOTO MainLoop
  68.  
  69. MenuBar:
  70. Menue=MENU(0)
  71. MenuPoint=MENU(1)
  72. IF Menue=1 THEN ON MenuPoint GOTO FileOpen,NewFile,MiniDataQuit
  73. IF MiniFile=1 THEN
  74.   IF Menue=2 THEN ON MenuPoint GOTO Searcher
  75.   IF Menue=3 THEN MaskChange
  76.   IF Menue=4 THEN ON MenuPoint GOTO PrintRecord,MiniFilePrint
  77.   IF Menue=5 THEN SortRoutine
  78. END IF
  79. RETURN
  80.  
  81. FileOpen:
  82. text$=""
  83. LOCATE 22,5:PRINT "Please enter filename: "
  84. Buffer
  85. TextDataEntry 30,22,23,24,text$
  86. LOCATE 22,5:PRINT SPACE$(70)
  87. IF text$="" THEN MainLoop
  88. ActualMiniFile$=text$+".MiniFile"
  89.  
  90. MiniFile=1:GOSUB MenuOn
  91. CLOSE #1
  92. quantity=0:nr=1:text$=""
  93. OPEN "R",#1,ActualMiniFile$,730               
  94. FIELD #1,10 AS a$,720 AS b$
  95. LOCATE 19,12:PRINT SPACE$(70)
  96. LOCATE 19,12:PRINT ActualMiniFile$
  97. GOSUB Separate
  98. GOSUB MaskLoad
  99. GOTO FirstRecord
  100.  
  101. NewFile:
  102. text$=""
  103. LOCATE 22,5:PRINT "Name of the file :"
  104. TextDataEntry 22,22,23,24,text$
  105. LOCATE 22,5: PRINT SPACE$(70)
  106. IF text$="" THEN
  107.   LOCATE 22,28:PRINT "Procedure terminated!"
  108.   GOSUB Pause
  109.   GOTO MainLoop
  110. END IF
  111. IF INSTR(text$,":")<>0 THEN
  112.   LOCATE 22,19:PRINT "Please use the internal drive only."
  113.   GOSUB Pause
  114.   GOTO NewFile
  115. END IF
  116. CLOSE #1:ActualMiniFile$=""
  117. quantity=0:nr=1
  118. text$=text$+".MiniFile"
  119. ActualMiniFile$=text$
  120. GOSUB MenuOn
  121. OPEN "R",#1,ActualMiniFile$,730
  122. FIELD #1,10 AS a$,720 AS b$              
  123. LSET a$=CHR$(1)
  124. LSET b$=CHR$(255)
  125. PUT #1,1
  126. nr=1:GOSUB AuxOutput
  127. MiniFile=1
  128. LOCATE 19,12:PRINT SPACE$(70)
  129. LOCATE 19,12:PRINT ActualMiniFile$
  130. GOSUB MenuOut
  131. GOTO CreateMask
  132.  
  133. RecordChange:
  134. Enter$=""
  135. FOR i=1 TO quantity
  136. xp%=1+i
  137. text$=Enter$(i)
  138. Buffer
  139. TextDataEntry 28,xp%,80,32,text$
  140. Enter$(i)=text$
  141. LOCATE 1+i,28:PRINT SPACE$(32)
  142. LOCATE 1+i,28
  143. lang=LEN(text$):IF lang>32 THEN lang=32
  144. PRINT MID$(text$,1,lang)
  145. Enter$=Enter$+text$+CHR$(3)
  146. NEXT i
  147. GOSUB MenuOn
  148. l$=STR$(LEN(Enter$))
  149. LSET a$=l$
  150. LSET b$=Enter$
  151. PUT #1,nr
  152. GOSUB MenuOut
  153. GOTO MainLoop
  154.  
  155. PrintRecord:
  156. GOSUB MenuOn
  157. OPEN "PRT:" FOR OUTPUT AS #2
  158. FOR i=1 TO quantity
  159. PRINT #2,Enter$(i)
  160. NEXT i
  161. FOR i=1 TO 2:PRINT #2,CHR$(10):NEXT i
  162. CLOSE #2
  163. GOSUB MenuOut
  164. IF under=1 THEN RETURN
  165. GOTO MainLoop
  166.  
  167. MiniFilePrint:
  168. GOSUB MenuOn
  169. nr=1
  170. OPEN "PRT:" FOR OUTPUT AS #2
  171. more10:
  172. ReturnChk=1:GOTO Separate2
  173. R1:
  174. FOR i=1 TO quantity
  175. PRINT #2,Enter$(i)
  176. NEXT i
  177. FOR i=1 TO 2:PRINT #2,CHR$(10):NEXT i
  178. nr=nr+1
  179. GOTO more10
  180.  
  181. MiniDataQuit:
  182. COLOR 1,0
  183. LOCATE 22,21
  184. PRINT "Are you sure ? (if yes then 'y')"
  185. w:
  186. be$=INKEY$
  187. IF be$="" THEN GOTO w
  188. IF UCASE$(be$)="Y" THEN CLOSE #1:END
  189. LOCATE 22,5
  190. PRINT SPACE$(70)
  191. GOTO MainLoop
  192.  
  193. FirstRecord:
  194. nr=1:halt=0
  195.  
  196. apart:
  197. GOSUB MenuOn
  198. GOTO Separate2
  199. R3:
  200.  
  201. FOR i=1 TO quantity
  202. LOCATE i+1,28
  203. PRINT Enter$(i)
  204. NEXT i
  205. GOSUB AuxOutput
  206. GOSUB MenuOut
  207. IF under=1 THEN RETURN
  208. GOTO MainLoop
  209.           
  210. PrevRecord:
  211. halt=0
  212. nr=nr-1:IF nr<1 THEN nr=1:GOTO MainLoop
  213. GOTO apart                           
  214.  
  215. NextRecord:
  216. IF halt=1 THEN MainLoop
  217. vor=1
  218. nr=nr+1
  219. GOTO apart
  220.  
  221. DataEntry:
  222. IF Enter$<>"" THEN RecordChange
  223.  
  224. FOR i= 1 TO quantity
  225. text$=""
  226. xp%=1+i
  227. Buffer
  228. TextDataEntry 28,xp%,80,32,text$
  229. Enter$(i)=text$
  230. LOCATE 1+i,28:PRINT SPACE$(32)
  231. LOCATE 1+i,28
  232. lang=LEN(text$):IF lang>32 THEN lang=32
  233. PRINT MID$(text$,1,lang)
  234. Enter$=Enter$+text$+CHR$(3)
  235. NEXT i
  236. GOSUB MenuOn
  237. l$=STR$(LEN(Enter$))
  238. LSET a$=l$
  239. LSET b$=Enter$
  240. PUT #1,nr
  241. FIELD #1,10 AS init1$,720 AS init2$
  242. LSET init1$=CHR$(1)
  243. LSET init2$=CHR$(255)
  244. PUT #1,nr+1
  245. GOSUB MenuOut
  246. halt=0
  247. nr=nr+1
  248. GOTO apart
  249.  
  250. Searcher:
  251.  
  252. FOR i=1 TO quantity
  253. LOCATE 1+i,28
  254. PRINT Search$(i)
  255. NEXT i
  256. LOCATE 22,19:PRINT "Please input or change search critera."
  257. FOR i=1 TO quantity
  258. text$=Search$(i)
  259. xp%=1+i
  260. Buffer
  261. TextDataEntry 28,xp%,80,32,text$
  262. Search$(i)=text$
  263. LOCATE 1+i,28:PRINT SPACE$(32)
  264. LOCATE 1+i,28
  265. lang=LEN(text$):IF lang>32 THEN lang=32
  266. PRINT MID$(text$,1,lang)
  267. NEXT i
  268. LOCATE 22,5:PRINT SPACE$(70)
  269. FOR i=1 TO quantity
  270. IF Search$(i)<>"" THEN start
  271. NEXT i
  272. LOCATE 22,24
  273. PRINT "No search critera available."
  274. GOSUB Pause
  275. GOSUB AuxOutput
  276. under=1:GOSUB apart:under=0:GOTO MainLoop
  277.  
  278. start:
  279. nr=1
  280. LOCATE 22,5:PRINT SPACE$(70)
  281.  
  282. start2:
  283. GOSUB MenuOn
  284. ReturnChk=2:GOTO Separate2
  285. R2:
  286.  
  287. FOR i=1 TO quantity
  288. IF Search$(i)<>"" AND INSTR(Enter$(i),Search$(i))=0 THEN moreIV
  289. NEXT i
  290. FOR i=1 TO quantity
  291. LOCATE 1+i,28
  292. PRINT Enter$(i)
  293. NEXT i
  294. GOSUB MenuOut
  295. LOCATE 22,17:PRINT "F1=Print Record       Key=Search ..."
  296. question:
  297. ab$=INKEY$
  298. IF ab$="" THEN question
  299. IF ab$=CHR$(129) THEN under=1:GOSUB PrintRecord:under=0
  300. LOCATE 22,5:PRINT SPACE$(70)
  301. moreIV:
  302. nr=nr+1
  303. GOTO start2
  304.  
  305. MaskLoad:
  306.  
  307. COLOR 2,0
  308. OPEN MiniFileName$ FOR INPUT AS #3
  309. INPUT #3,quantity
  310. FOR i=1 TO quantity
  311. INPUT #3,Maske$(i)
  312. LOCATE i+1,2:PRINT "(";i:LOCATE i+1,5:PRINT ")"
  313. LOCATE i+1,7
  314. PRINT Maske$(i)
  315. NEXT i
  316. CLOSE #3
  317. COLOR 1,0
  318. RETURN
  319.  
  320. MaskeSave:
  321. MiniFileName$=""
  322. GOSUB Separate
  323. GOSUB MenuOn
  324. OPEN MiniFileName$ FOR OUTPUT AS #3
  325. PRINT #3,quantity
  326. FOR i=1 TO quantity
  327. PRINT #3,Maske$(i)
  328. NEXT i
  329. CLOSE #3
  330. GOSUB MenuOut
  331. IF under=1 THEN RETURN
  332. GOTO MainLoop
  333.  
  334. CreateMask:
  335.  
  336. FOR i=1 TO quantity
  337. Maske$(i)=""
  338. LOCATE 1+i,20
  339. PRINT SPACE$(17)
  340. NEXT i
  341. again:
  342. LOCATE 22,5
  343. PRINT "Number of Fields per Record (max. 9) :"
  344. quantity=0:IF other=0 THEN text$=""
  345. Buffer
  346. TextDataEntry 46,22,1,2,text$
  347. LOCATE 22,5:PRINT SPACE$(70)
  348. quantity=VAL(text$)
  349. IF quantity<1 OR quantity>9 THEN again
  350. mcreateII:
  351. FOR i=1 TO quantity
  352.  text$=""
  353. REM IF other=1 THEN text$=Maske$(i)
  354.  
  355.  
  356. xp%=1+i
  357. COLOR 2,0
  358. LOCATE xp%,2:PRINT "(";i:LOCATE xp%,5:PRINT ")"
  359. Buffer
  360. TextDataEntry 7,xp%,19,20,text$
  361. IF RIGHT$(text$,1)<>" " AND RIGHT$(text$,1)<>"." THEN text$=text$+" "
  362. lang:                                            
  363. IF LEN(text$)<20 THEN text$=text$+".":GOTO lang
  364. COLOR 1,0:LOCATE 1+i,7:PRINT SPACE$(18)
  365. COLOR 2,0:LOCATE 1+i,7:PRINT text$
  366. Maske$(i)=text$
  367. NEXT i
  368. other=0
  369. COLOR 1,0
  370. GOTO MaskeSave
  371.  
  372. MaskChange:
  373. other=1
  374. GOTO mcreateII
  375.  
  376. Pause:
  377. FOR i=1 TO 4:MENU i,0,0:NEXT i
  378. Buffer
  379. LOCATE 22,63
  380. PRINT "» Press a key «"
  381. WHILE INKEY$="":WEND
  382. LOCATE 22,5:PRINT SPACE$(70)
  383. LOCATE 22,63:PRINT SPACE$(16)
  384. FOR i=1 TO 4:MENU i,0,1:NEXT i
  385. RETURN
  386.  
  387. AuxOutput:
  388. COLOR 1,0
  389. LOCATE 20,17:PRINT SPACE$(10)
  390. LOCATE 20,17:PRINT STR$(nr)
  391. RETURN
  392.  
  393. Interruption:
  394. CLOSE #1:END
  395.  
  396. Problem:
  397. GOSUB MenuOut
  398. COLOR 1,0
  399. LOCATE 22,5:PRINT SPACE$(70)
  400. IF ERR=7 OR ERR=14 THEN
  401.   LOCATE 22,18:PRINT "Memory full."
  402.   RESUME Marke
  403. END IF
  404. IF ERR=53 THEN
  405.   LOCATE 22,19:PRINT "File not found."
  406.   LOCATE 19,12:PRINT SPACE$(63)
  407.  
  408.   CLOSE #1
  409.   KILL ActualMiniFile$
  410.   MiniFile=0
  411.   RESUME Marke
  412. END IF
  413. LOCATE 22,17
  414. PRINT "An Internal program error occoured."
  415. Marke:
  416. GOSUB Pause
  417. GOTO MainLoop
  418.  
  419. Separate:
  420. MiniFileName$=""
  421. FOR i=1 TO LEN(ActualMiniFile$)
  422. IF MID$(ActualMiniFile$,i,1)="." THEN stop1
  423. MiniFileName$=MiniFileName$+ MID$(ActualMiniFile$,i,1)
  424. NEXT i
  425. stop1:
  426. MiniFileName$=MiniFileName$+".Maske"
  427. RETURN
  428.  
  429. Separate2:
  430. z=0:n=1:Enter$=""
  431. GET #1,nr
  432. l$=a$:Enter$=b$
  433. IF INSTR(Enter$,CHR$(255))<>0 THEN
  434.   GOSUB MenuOut
  435.   IF ReturnChk=1 THEN CLOSE #2:ReturnChk=0:GOTO FirstRecord
  436.   GOSUB AuxOutput
  437.   under=0
  438.   IF ReturnChk=2 THEN
  439.     LOCATE 22,21:PRINT "No more records available."
  440.     ReturnChk=0
  441.     GOSUB Pause
  442.     GOTO FirstRecord
  443.   END IF
  444.  
  445.   FOR i=1 TO quantity:Enter$(i)="":NEXT i:Enter$=""
  446.   halt=1
  447. END IF
  448. l=VAL(l$)
  449. FOR i=1 TO l
  450. IF MID$(Enter$,i,1)=CHR$(3) THEN
  451.   z=z+1:IF z>quantity THEN ende
  452.   Enter$(z)=MID$(Enter$,n,i-n)
  453.   n=i+1
  454. END IF
  455. NEXT i
  456. ende:
  457. IF ReturnChk<>0 THEN ON ReturnChk GOTO R1,R2
  458. GOTO R3
  459.  
  460. MenuOn:
  461. FOR i=1 TO 5:MENU i,0,0:NEXT i
  462. LOCATE 22,62:PRINT "» Moment ... «"
  463. RETURN
  464.  
  465. MenuOut:
  466. FOR i=1 TO 5:MENU i,0,1:NEXT i
  467. LOCATE 22,62:PRINT SPACE$(14)
  468. Buffer
  469. RETURN
  470.  
  471. SortRoutine:
  472. text$=""
  473. LOCATE 22,5
  474. PRINT "Sort using which field :"
  475. Buffer
  476. TextDataEntry 32,22,2,3,text$
  477. LOCATE 22,5:PRINT SPACE$(70)
  478. IF text$="" OR VAL(text$)<1 OR VAL(text$)>quantity THEN MainLoop
  479. Kriterium=VAL(text$)
  480. GOSUB MenuOn
  481. nr=1
  482. more:
  483. z=0:n=1:Enter$=""
  484. GET #1,nr
  485. l$=a$:Enter$=b$
  486. IF INSTR(Enter$,CHR$(255))<>0 THEN more2
  487. nr=nr+1
  488. GOTO more
  489.  
  490. more2:
  491. Counter=nr-1
  492. DIM DataEntry2$(Counter)
  493. FOR k=1 TO Counter
  494. z=0:n=1:Enter$=""
  495. GET #1,1
  496. l$=a$:Enter$=b$
  497. l=VAL(l$)
  498. FOR j=1 TO l
  499. IF MID$(Enter$,j,1)=CHR$(3) THEN
  500.   z=z+1:IF z>quantity THEN ende2
  501.   Enter$(z)=MID$(Enter$,n,j-n)
  502.   n=j+1
  503. END IF
  504. NEXT j
  505. ende2:
  506. FOR i=1 TO Counter-1
  507. z=0:n=1:DataEntry2$=""
  508. GET #1,i+1
  509. l2$=a$:DataEntry2$=b$
  510. l2=VAL(l2$)
  511. FOR j=1 TO l2
  512. IF MID$(DataEntry2$,j,1)=CHR$(3) THEN
  513.   z=z+1:IF z>quantity THEN ende3
  514.   DataEntry2$(z)=MID$(DataEntry2$,n,j-n)
  515.   n=j+1
  516. END IF
  517. NEXT j
  518. ende3:
  519. IF Enter$(Kriterium) > DataEntry2$(Kriterium) THEN
  520.   LSET a$=l$
  521.   LSET b$=Enter$
  522.   PUT #1,i+1
  523.   LSET a$=l2$
  524.   LSET b$=DataEntry2$
  525.   PUT #1,i
  526.   GOTO iandk
  527. END IF
  528. Enter$=DataEntry2$:l$=l2$
  529. FOR a=1 TO quantity:Enter$(a)=DataEntry2$(a):NEXT a
  530. iandk:
  531. NEXT i
  532. NEXT k
  533. ERASE DataEntry2$
  534. GOSUB MenuOut
  535. GOTO FirstRecord
  536.  
  537. SUB Buffer STATIC
  538. Buffer:
  539. ad$=INKEY$
  540. IF ad$<>"" THEN ad$="":GOTO Buffer
  541. END SUB
  542.  
  543. SUB TextDataEntry (xpos%,ypos%,Length%,Wide%,text2$) STATIC
  544. SHARED text$
  545. text$=text2$
  546. COLOR 0,2
  547. LOCATE ypos%,xpos%:PRINT SPACE$(Wide%)
  548. COLOR 1,2
  549. IF text$<>"" THEN LOCATE ypos%,xpos%:PRINT text$
  550. quantity=0:StepNum=1:xpos2%=xpos%
  551. LINE (xpos%*8-8,ypos%*8-1)-(xpos%*8-1,ypos%*8-1),3
  552.  
  553. 1 :
  554. ab$=INKEY$
  555. IF ab$="" THEN 1
  556. IF ab$=CHR$(3) OR ab$=CHR$(255) THEN 1
  557.   
  558. 'Ende                  
  559. IF ab$=CHR$(13) THEN goback10
  560.  
  561. 'Cursor right
  562. IF ab$=CHR$(30) AND text$<>"" AND quantity<LEN(text$) THEN
  563.   LINE (xpos%*8-8,ypos%*8-1)-(xpos%*8-1,ypos%*8-1),2  
  564.   IF StepNum>0 THEN LOCATE ypos%,xpos2%:PRINT MID$(text$,StepNum,1)
  565.   xpos%=xpos%+1
  566.   IF xpos%>xpos2%+Wide%-1 THEN
  567.     xpos%=xpos2%+Wide%-1
  568.     StepNum=StepNum+1
  569.     IF (StepNum-1)>50 THEN StepNum=50
  570.   END IF                
  571. lang=LEN(text$):IF lang>Wide% THEN lang=Wide%  
  572. IF StepNum>0 THEN LOCATE ypos%,xpos2%:PRINT MID$(text$,StepNum,lang)
  573. LINE (xpos%*8-8,ypos%*8-1)-(xpos%*8-1,ypos%*8-1),3
  574. quantity=quantity+1
  575. GOTO 1
  576. END IF
  577. IF ab$=CHR$(30) THEN 1
  578.  
  579. 'Cursor left
  580. IF ab$=CHR$(31) AND text$<>"" AND quantity>0 THEN
  581.   LINE (xpos%*8-8,ypos%*8-1)-(xpos%*8-1,ypos%*8-1),2
  582.   IF StepNum>0 THEN LOCATE ypos%,xpos2%:PRINT MID$(text$,StepNum,1)
  583.   xpos%=xpos%-1
  584.   IF xpos%<xpos2% THEN
  585.     xpos%=xpos2%
  586.     StepNum=StepNum-1
  587.     IF (StepNum-1)<1 THEN StepNum=1
  588.   END IF
  589. lang=LEN(text$):IF lang>Wide% THEN lang=Wide%
  590. IF StepNum>0 THEN LOCATE ypos%,xpos2%:PRINT MID$(text$,StepNum,lang)
  591. LINE (xpos%*8-8,ypos%*8-1)-(xpos%*8-1,ypos%*8-1),3
  592. quantity=quantity-1
  593. 'GOTO 1
  594. END IF
  595. IF ab$=CHR$(31) THEN 1
  596.  
  597. 'Backspace
  598. IF ab$=CHR$(8) AND quantity>0 AND text$<>"" THEN
  599.   text$=LEFT$(text$,quantity-1)+MID$(text$,quantity+1,LEN(text$)-quantity)
  600.   xpos%=xpos%-1:quantity=quantity-1
  601.   lang=LEN(text$):IF lang>Wide% THEN lang=Wide%  
  602.   LINE (xpos%*8-8,ypos%*8-8)-((Wide%+xpos2%-1)*8-1,ypos%*8-1),2,bf
  603.   LOCATE ypos%,xpos2%:PRINT MID$(text$,StepNum,lang)
  604.   LINE (xpos%*8-8,ypos%*8-1)-(xpos%*8-1,ypos%*8-1),3
  605.   GOTO 1
  606. END IF
  607. IF ab$=CHR$(8) THEN 1
  608.  
  609. ' Delete 
  610. IF ab$=CHR$(127) AND quantity>=0 AND text$<>"" THEN
  611.   text$=LEFT$(text$,quantity)+MID$(text$,quantity+2,LEN(text$)-quantity)
  612.   lang=LEN(text$):IF lang>Wide% THEN lang=Wide%
  613.   LINE (xpos%*8-8,ypos%*8-8)-((Wide%+xpos2%-1)*8-1,ypos%*8-1),2,bf
  614.   LOCATE ypos%,xpos2%:PRINT MID$(text$,StepNum,lang)
  615.   LINE (xpos%*8-8,ypos%*8-1)-(xpos%*8-1,ypos%*8-1),3
  616.   GOTO 1
  617. END IF
  618. IF ab$=CHR$(127) THEN 1
  619.  
  620.  
  621. 'DataEntry
  622. IF LEN(text$)+1>Length% THEN 1
  623. IF LEN(text$)>1 AND MID$(text$,quantity+1)<>"" THEN text$=LEFT$(text$,quantity)+ab$+MID$(text$,quantity+1,LEN(text$)-quantity) ELSE text$=text$+ab$
  624. quantity=quantity+1
  625. xpos%=xpos%+1
  626. IF xpos%>xpos2%+Wide%-1 THEN 
  627.   xpos%=xpos2%+Wide%-1
  628.   StepNum=StepNum+1     
  629.   lang=LEN(text$):IF lang>Wide% THEN lang=Wide%
  630.   LOCATE ypos%,xpos2%:PRINT MID$(text$,StepNum,lang)
  631.   LINE (xpos%*8-8,ypos%*8-1)-(xpos%*8-1,ypos%*8-1),3
  632.   GOTO 1
  633. END IF
  634. lang=LEN(text$):IF lang>Wide% THEN lang=Wide%
  635. LOCATE ypos%,xpos2%:PRINT MID$(text$,StepNum,lang)
  636. LINE (xpos%*8-8,ypos%*8-1)-(xpos%*8-1,ypos%*8-1),3
  637. GOTO 1
  638.          
  639. goback10:
  640. COLOR 1,0
  641. END SUB
  642.  
  643.